As the cost of computers decrease, more people are purchasing computer systems that have sophisticated computing and data storage capabilities. In addition to the word processing and spread sheet programs used with such computer systems, another common use for such systems is to store and retrieve data using commercially available database management system (DBMS) products. For example, a home computer system user may wish to store and access information regarding an investment portfolio on the computer. Similarly, the owner of a small business may desire to use a computer system to keep track of its customers, inventory, and sales orders. While commercially available database programs allow a user to store and retrieve these types of information, currently available database programs have a steep learning curve that discourages the average computer user from developing any but the most simple of databases.
Most conventional database programs use what is commonly known as a relational database architecture. These relational databases consist of one or more two-dimensional tables that contain numerous rows and columns. Each row of the relational table defines a record of the data. For example, in a customer table, each row refers to a particular customer in the database. The columns of the tables store particular attributes of each record. For example, one column may hold a customer's last name, another the customer's first name, and another the customer's street or post office box number, etc. The structure of the relational tables that store the data comprising the database is commonly referred to as the database schema.
The difficulty with using a commercially available database program is knowing how to define the database schema. Typically, in order to create anything but the most simple database, the user must either become an expert database designer or hire a consultant to create the database. Both options are generally undesirable because most computer users do not have the time or the desire to become expert database designers, and the cost of hiring a consultant can be prohibitive.
Another problem with current database programs is that they force the user to define the data that they wish to store in the database in a way that is determined by the database program. For example, to create a new database, most database programs present the user with a blank table and ask the user to identify the type of data to be placed in each column. If more than one table is required for defining the database schema, the user must create each additional table and define a key field or attribute that is common to two or more tables in order to relate one table to another. The problem with this method is that the user most likely does not think of the data to be stored in terms of tables, columns, and keys. For example, the user who wishes to create a database for the investment portfolio data most likely thinks of the data in terms of the names of companies in which stock is held, the number of shares of each company owned, a purchase price, a purchase date, a price-to-earnings ratio, etc. By requiring the user to define relational tables in conformance with rigid rules, the commercial database program forces the user to think of and characterize the data to be stored in a way that is unnatural.
Therefore, there is a need for a system that allows a user to create a relational database schema in a way that does not require the user to be familiar with the underlying database technology or rules for defining a database. The system should be easy to use and be able to run on commonly available computer systems. In addition, the user should be able to define the data to be stored in a way that mirrors the user's view of the data.